import java.util.ArrayList;
import java.util.Set;
import java.util.TreeSet;

public class GestorViajes {

	private ArrayList<Viajes> listaViajes;

	public GestorViajes() {
		listaViajes = new ArrayList<Viajes>();
	}

	/**
	 * Se dan de alta los viajes en el gestor
	 * 
	 * @param origen
	 *            ciudad origen
	 * @param destino
	 *            ciudad destino
	 * @param duracion
	 *            duracion del viaje
	 * @throws Exception
	 *             si la duracion es menor que cero
	 */
	public void agnadirViaje(String origen, String destino, int duracion)
			throws Exception {

		if (duracion <= 0)
			throw new Exception("duracion invalida");

		listaViajes.add(new Viajes(origen, destino, duracion));

	}

	public ArrayList<String> devolverCiudadesOrigen(String ciudadOrigen) {

		ArrayList<String> ciudadesOrigen = new ArrayList<String>();

		for (Viajes v : listaViajes) {
			if (v.getOrigen().equals(ciudadOrigen))
				ciudadesOrigen.add(v.getDestino());

		}
		return ciudadesOrigen;
	}

	public ArrayList<String> devolverCiudadesDestino(String ciudadDestino) {

		ArrayList<String> ciudadesDestino = new ArrayList<String>();

		for (Viajes v : listaViajes) {
			if (v.getDestino().equals(ciudadDestino))
				ciudadesDestino.add(v.getOrigen());

		}
		return ciudadesDestino;
	}

	public ArrayList<Viajes> devolverTodos() {
		return listaViajes;
	}

	public ArrayList<String> devolverCiudades() {
		Set<String> conjuntoCiudades = new TreeSet<String>();
		ArrayList<String> listaCiudades = new ArrayList<String>();

		for (Viajes v : listaViajes) {
			conjuntoCiudades.add(v.getOrigen());
			conjuntoCiudades.add(v.getDestino());

		}

		for (String c : conjuntoCiudades)
			listaCiudades.add(c);

		return listaCiudades;
	}
}